// 大乐透数据结构定义
interface DLTRecord {
  issue: string;          // 期号
  date: string;           // 日期
  redNumbers: number[];   // 红球号码
  blueNumbers: number[];  // 蓝球号码
  sales: number;          // 销售额
  firstPrizeCount: number; // 一等奖注数
  firstPrizeAmount: number; // 一等奖金额
  // 其他可能的字段...
}

/**
 * 解析大乐透数据
 * @param data 原始数据字符串
 * @returns 解析后的大乐透数据数组
 */
export function parseDLTData(data: string): DLTRecord[] {
  const records: DLTRecord[] = [];
  const lines = data.split('\n');
  let validCount = 0;
  let invalidCount = 0;

  for (const line of lines) {
    if (!line.trim()) continue;

    const parts = line.split(' ').filter(part => part !== '');
    if (parts.length < 20) {
      console.warn(`行数据字段不足20个，跳过: ${line}`);
      invalidCount++;
      continue;
    }

    const issue = parts[0];
    const date = parts[1];
    // 提取红球号码 (第2到第6个字段)
    const redNumbers = parts.slice(2, 7).map(num => parseInt(num, 10) || 0);
    // 提取蓝球号码 (第7到第8个字段)
    const blueNumbers = parts.slice(7, 9).map(num => parseInt(num, 10) || 0);
    // 提取销售额 (第17个字段)
    const sales = parseInt(parts[16], 10) || 0;
    // 提取一等奖注数 (第19个字段)
    const firstPrizeCount = parseInt(parts[18], 10) || 0;
    // 提取一等奖金额 (第20个字段)
    const firstPrizeAmount = parseInt(parts[19], 10) || 0;

    // 确保红球和蓝球号码有效
    if (redNumbers.some(isNaN) || blueNumbers.some(isNaN)) {
      console.warn(`号码解析错误，跳过: ${line}`);
      invalidCount++;
      continue;
    }

    records.push({
      issue,
      date,
      redNumbers,
      blueNumbers,
      sales,
      firstPrizeCount,
      firstPrizeAmount
    });
    validCount++;
  }

  console.log(`解析完成: 有效记录 ${validCount} 条, 无效记录 ${invalidCount} 条`);
  return records;
}

/**
 * 加载并解析大乐透数据
 * @returns 解析后的大乐透数据数组
 */
export async function loadDLTData(): Promise<DLTRecord[]> {
  try {
    // 导入大乐透数据文件
    const module = await import('./dLData.ts');
    // 假设dLData.ts导出了一个默认的字符串变量
    const data = module.default || '';
    console.log(`数据文件长度: ${data.length} 字符`);
    const records = parseDLTData(data);
    console.log(`加载完成: 共 ${records.length} 条记录`);
    return records;
  } catch (error) {
    console.error('加载大乐透数据失败:', error);
    return [];
  }
}

export type { DLTRecord };